package packet

import (
	"encoding/binary"
	"encoding/hex"
	"hy_808/protocol/hygprs"
	"time"
)

type PA075 struct {
	hygprs.Fields
}

/*
*
透传包
cmd: 0x03查询版本，人脸使用75透传包，0xf0查询收费机版本
*/
func GenA075Packet(line, bus, operator uint32, cmd byte) PA075 {
	data, _ := hex.DecodeString("a0002a02000175010000003402000030390400000001066407287112f00000a5003400393000000535a1")
	p := PA075{hygprs.MakeFields(hygprs.MakePacket(data))}
	p.SetLineID(line)
	p.SetBusID(bus)
	p.SetDispatcherID(operator)
	p.SetUnix(uint32(time.Now().Local().Unix()))
	switch cmd {
	case 0xf0: //查询收费机版本
		p.DeviceVersion(uint16(line), uint16(bus))
		break
	}
	p.Pack()
	return p
}

/*
*
1.3.10.13  后台请求车载机程序版本号
数据类型（0xf0）+ 0x00 + 0x00 + 0xa5 + 0x5a(垦利为车号高字节)+2字节线路号+2字节车号
返回数据：

	数据类型（0xf0）+ 0x00 + 0x00 + 0xa5 + 0x5a(垦利为车号高字节)+2字节线路号+2字节车号+8字节车载机特征字+4字节RC500芯片号+4字节车载机序列号+2字节版本号+4字节银行终端号+16字节银行商户号（ASCII码）+5字节银行TPDU（BCD码）+20字节SIM卡号（ASCII码）
*/
func (p PA075) DeviceVersion(line, bus uint16) {
	var b []byte
	lineB := make([]byte, 2)
	busB := make([]byte, 2)
	binary.LittleEndian.PutUint16(lineB, line)
	binary.LittleEndian.PutUint16(busB, bus)
	b = append(append([]byte{0xf0, 0x00, 0x00, 0xa5, 0x00}, lineB...), busB...)
	p.SetBytes(0x12, b) //设置透传详细数据
}
